{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import re\n",
    "from tqdm import tqdm_notebook\n",
    "\n",
    "from nltk.corpus import stopwords\n",
    "\n",
    "from tensorflow.keras import regularizers, initializers, optimizers, callbacks\n",
    "from tensorflow.keras.preprocessing.sequence import pad_sequences\n",
    "from tensorflow.keras.preprocessing.text import Tokenizer\n",
    "from keras.utils.np_utils import to_categorical\n",
    "from tensorflow.keras.layers import *\n",
    "from tensorflow.keras.models import Model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "MAX_NB_WORDS = 100000    # max no. of words for tokenizer\n",
    "MAX_SEQUENCE_LENGTH = 200 # max length of each entry (sentence), including padding\n",
    "VALIDATION_SPLIT = 0.2   # data for validation (not used in training)\n",
    "EMBEDDING_DIM = 100      # embedding dimensions for word vectors (word2vec/GloVe)\n",
    "GLOVE_DIR = \"glove/glove.6B.\"+str(EMBEDDING_DIM)+\"d.txt\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "train = pd.read_csv('data/toxic_train.csv')\n",
    "test = pd.read_csv('data/toxic_test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>comment_text</th>\n",
       "      <th>toxic</th>\n",
       "      <th>severe_toxic</th>\n",
       "      <th>obscene</th>\n",
       "      <th>threat</th>\n",
       "      <th>insult</th>\n",
       "      <th>identity_hate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>0000997932d777bf</td>\n",
       "      <td>Explanation\\nWhy the edits made under my usern...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>000103f0d9cfb60f</td>\n",
       "      <td>D'aww! He matches this background colour I'm s...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>000113f07ec002fd</td>\n",
       "      <td>Hey man, I'm really not trying to edit war. It...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>0001b41b1c6bb37e</td>\n",
       "      <td>\"\\nMore\\nI can't make any real suggestions on ...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>0001d958c54c6e35</td>\n",
       "      <td>You, sir, are my hero. Any chance you remember...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 id                                       comment_text  toxic  \\\n",
       "0  0000997932d777bf  Explanation\\nWhy the edits made under my usern...      0   \n",
       "1  000103f0d9cfb60f  D'aww! He matches this background colour I'm s...      0   \n",
       "2  000113f07ec002fd  Hey man, I'm really not trying to edit war. It...      0   \n",
       "3  0001b41b1c6bb37e  \"\\nMore\\nI can't make any real suggestions on ...      0   \n",
       "4  0001d958c54c6e35  You, sir, are my hero. Any chance you remember...      0   \n",
       "\n",
       "   severe_toxic  obscene  threat  insult  identity_hate  \n",
       "0             0        0       0       0              0  \n",
       "1             0        0       0       0              0  \n",
       "2             0        0       0       0              0  \n",
       "3             0        0       0       0              0  \n",
       "4             0        0       0       0              0  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id               0\n",
       "comment_text     0\n",
       "toxic            0\n",
       "severe_toxic     0\n",
       "obscene          0\n",
       "threat           0\n",
       "insult           0\n",
       "identity_hate    0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "id              0\n",
       "comment_text    0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "labels = ['toxic', 'severe_toxic', 'obscene', 'threat', 'insult', 'identity_hate']\n",
    "y = train[labels].values\n",
    "comments_train = train['comment_text']\n",
    "comments_test = test['comment_text']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "comments_train = list(comments_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def clean_text(text, remove_stopwords = True):\n",
    "    output = \"\"\n",
    "    text = str(text).replace(\"\\n\", \"\")\n",
    "    text = re.sub(r'[^\\w\\s]','',text).lower()\n",
    "    if remove_stopwords:\n",
    "        text = text.split(\" \")\n",
    "        for word in text:\n",
    "            if word not in stopwords.words(\"english\"):\n",
    "                output = output + \" \" + word\n",
    "    else:\n",
    "        output = text\n",
    "    return str(output.strip())[1:-3].replace(\"  \", \" \")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fb26a74c31cf451dac8bbe6515492e2d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(IntProgress(value=0, max=159571), HTML(value='')))"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "texts = [] \n",
    "\n",
    "for line in tqdm_notebook(comments_train, total=159571): \n",
    "    texts.append(clean_text(line))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sample data: aww matches background colour im seemingly stuck thanks talk 2151 january 11 2016  [0 0 0 0 0 0]\n"
     ]
    }
   ],
   "source": [
    "print('Sample data:', texts[1], y[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "tokenizer = Tokenizer(num_words=MAX_NB_WORDS)\n",
    "tokenizer.fit_on_texts(texts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Vocabulary size: 324669\n"
     ]
    }
   ],
   "source": [
    "sequences = tokenizer.texts_to_sequences(texts)\n",
    "word_index = tokenizer.word_index\n",
    "print('Vocabulary size:', len(word_index))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of data tensor: (159571, 200)\n",
      "Shape of label tensor: (159571, 6)\n"
     ]
    }
   ],
   "source": [
    "data = pad_sequences(sequences, padding = 'post', maxlen = MAX_SEQUENCE_LENGTH)\n",
    "\n",
    "print('Shape of data tensor:', data.shape)\n",
    "print('Shape of label tensor:', y.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "indices = np.arange(data.shape[0])\n",
    "np.random.shuffle(indices)\n",
    "data = data[indices]\n",
    "labels = y[indices]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_validation_samples = int(VALIDATION_SPLIT*data.shape[0])\n",
    "x_train = data[: -num_validation_samples]\n",
    "y_train = labels[: -num_validation_samples]\n",
    "x_val = data[-num_validation_samples: ]\n",
    "y_val = labels[-num_validation_samples: ]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of entries in each category:\n",
      "training:  [12259  1274  6777   389  6288  1136]\n",
      "validation:  [3035  321 1672   89 1589  269]\n"
     ]
    }
   ],
   "source": [
    "print('Number of entries in each category:')\n",
    "print('training: ', y_train.sum(axis=0))\n",
    "print('validation: ', y_val.sum(axis=0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tokenized sentences: \n",
      " [  870   136     3   136     3   119   613   242    27   442    34  1281\n",
      "    19   406    59 10384   164   103   121    98     9     2    16   358\n",
      "    42    98   118    32  1006    42     2  2081    42  5177   736  2266\n",
      "  1873   242  1040    31   193   810  1469  1763  2540    35    42   164\n",
      "  1068    98   164  4782  1161   166   300  5765  3933   300   485   743\n",
      "  3053   300  5821  4058  7204   375   300   239   302    42   553     3\n",
      "  1068    42   395  2409   300  5568  1937  1204  2603     8   348   732\n",
      "     9    33   343   644   605  1184  1876   527   317  4707  2174  1729\n",
      "  2073   300   171    45  3314    11     4     6   679   193    32   127\n",
      "  2357   486    24  1380     0     0     0     0     0     0     0     0\n",
      "     0     0     0     0     0     0     0     0     0     0     0     0\n",
      "     0     0     0     0     0     0     0     0     0     0     0     0\n",
      "     0     0     0     0     0     0     0     0     0     0     0     0\n",
      "     0     0     0     0     0     0     0     0     0     0     0     0\n",
      "     0     0     0     0     0     0     0     0     0     0     0     0\n",
      "     0     0     0     0     0     0     0     0     0     0     0     0\n",
      "     0     0     0     0     0     0     0     0]\n",
      "One hot label: \n",
      " [0 0 0 0 0 0]\n"
     ]
    }
   ],
   "source": [
    "print('Tokenized sentences: \\n', data[10])\n",
    "print('One hot label: \\n', labels[10])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loading GloVe from: glove/glove.6B.100d.txt ...Done.\n",
      " Proceeding with Embedding Matrix... Completed!\n"
     ]
    }
   ],
   "source": [
    "embeddings_index = {}\n",
    "f = open(GLOVE_DIR)\n",
    "print('Loading GloVe from:', GLOVE_DIR,'...', end='')\n",
    "for line in f:\n",
    "    values = line.split()\n",
    "    word = values[0]\n",
    "    embeddings_index[word] = np.asarray(values[1:], dtype='float32')\n",
    "f.close()\n",
    "print(\"Done.\\n Proceeding with Embedding Matrix...\", end=\"\")\n",
    "\n",
    "embedding_matrix = np.random.random((len(word_index) + 1, EMBEDDING_DIM))\n",
    "for word, i in word_index.items():\n",
    "    embedding_vector = embeddings_index.get(word)\n",
    "    if embedding_vector is not None:\n",
    "        embedding_matrix[i] = embedding_vector\n",
    "print(\" Completed!\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "sequence_input = Input(shape=(MAX_SEQUENCE_LENGTH,), dtype='int32')\n",
    "embedding_layer = Embedding(len(word_index) + 1,\n",
    "                           EMBEDDING_DIM,\n",
    "                           weights = [embedding_matrix],\n",
    "                           input_length = MAX_SEQUENCE_LENGTH,\n",
    "                           trainable=False,\n",
    "                           name = 'embeddings')\n",
    "embedded_sequences = embedding_layer(sequence_input)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = LSTM(60, return_sequences=True,name='lstm_layer')(embedded_sequences)\n",
    "x = GlobalMaxPool1D()(x)\n",
    "x = Dropout(0.1)(x)\n",
    "x = Dense(50, activation=\"relu\")(x)\n",
    "x = Dropout(0.1)(x)\n",
    "preds = Dense(6, activation=\"sigmoid\")(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_1 (InputLayer)         [(None, 200)]             0         \n",
      "_________________________________________________________________\n",
      "embeddings (Embedding)       (None, 200, 100)          32467000  \n",
      "_________________________________________________________________\n",
      "lstm_layer (UnifiedLSTM)     (None, 200, 60)           38640     \n",
      "_________________________________________________________________\n",
      "global_max_pooling1d (Global (None, 60)                0         \n",
      "_________________________________________________________________\n",
      "dropout (Dropout)            (None, 60)                0         \n",
      "_________________________________________________________________\n",
      "dense (Dense)                (None, 50)                3050      \n",
      "_________________________________________________________________\n",
      "dropout_1 (Dropout)          (None, 50)                0         \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 6)                 306       \n",
      "=================================================================\n",
      "Total params: 32,508,996\n",
      "Trainable params: 41,996\n",
      "Non-trainable params: 32,467,000\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model = Model(sequence_input, preds)\n",
    "model.compile(loss = 'binary_crossentropy',\n",
    "             optimizer='adam',\n",
    "             metrics = ['accuracy'])\n",
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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P/8kImtr68OHD1+9epWIXF1d33vvvdLS0t9++42IRo8erZ2/udVVVlYOHDjQzc2ttrY2JCTk+vXr+terVqsTExO7d+9ORAsXLkxNTd27dy/7M3769Gk9e0P/jmqw1br3zDk5OexxH2vXrr1z585XX31FRL6+voYcpib3Z319va+v75w5c9hgZmamXC7XnhIHDx40Nzc/dOhQk5uvVCp79uzZYOTZs2c3/098fHxlZaXYsWcIK37z5s1EtGnTJjby66+/3rx5s9jUnVfbTgYi8vT0VKvVRUVF33//vYuLS48ePTIyMozioOsZKYqio6OjnZ1d4/GNUbv0uYSEhJiYmNTV1Yn/u7308/NrXOWbb75JRHfv3tVO+uKLL4ho2bJl4v+Oq/b+nF21RkVFiaK4ZcuWffv2iaKo0Wg8PDwUCkXjxg3ZVO2cffv21d2u3r17674N9KzuwoULcrl8+PDhO3fuNGSloih6enoSEXsXiaIYHx9PRFOnTtWzN/TvqMZbrTvo5eWlu2kODg6mpqbstf7D1GTL27ZtI6L09PQGm6MdrK+vb27De/bs2adPn8bjL1y4QETdunUrKChosNIOOENY8SUlJZaWlkqlUqVSiaIYFBRUXFwsNhUubTsZtH+qzczM+vXrN3v2bJY+RnHQ9YwURVGpVDo5OTUe31jjcGnLbVFgYKBGo2GXwWZmZkQ0duzYxrOxj/p078ADAgKI6MyZM9ox2qmTJk0iInaVsWTJkgkTJvzzn/9cu3ZtbW2tSqVqQ5G6GvQC2Nra6l5/6lndk08++cYbb5w7d+7xxx83cF0mJiZExD6GIKKQkBAiunHjhp69YciOak6DK14bG5va2lr22sDDpItdALu6ujbYHC2ZTNbcsgMGDLh3717jb6awXefq6mpvb99gUoedIdbW1i+99FJ2dva33377n//8x93d3cbGpsk523wysHdmdXX1nTt3Pv300/79++vfwM5z0PVQqVT5+flDhgxp2+JtCZdXX331s88+e+WVV/72t7/FxsauXr169erVTTRtYkJEt2/f1o5xcHAgImtr68Yzs0n9+vUjovPnz/v4+Li7u69atYpdAXKlZ3WiKGZmZiqVylmzZtXV1bWhcScnJyJSKpV69kardpThDDxMulgfZFFRURtWN2bMGPpfPOliW9cgpHQndcwZsmjRIhMTkw8++GDb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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.keras.utils.plot_model(model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training progress:\n",
      "Train on 127657 samples, validate on 31914 samples\n",
      "Epoch 1/2\n",
      "127657/127657 [==============================] - 537s 4ms/sample - loss: 0.1277 - accuracy: 0.9650 - val_loss: 0.1040 - val_accuracy: 0.9699\n",
      "Epoch 2/2\n",
      "127657/127657 [==============================] - 533s 4ms/sample - loss: 0.0967 - accuracy: 0.9720 - val_loss: 0.0890 - val_accuracy: 0.9734\n"
     ]
    }
   ],
   "source": [
    "print('Training progress:')\n",
    "history = model.fit(x_train, y_train, epochs = 2, batch_size=32, validation_data=(x_val, y_val))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "loss = history.history['loss']\n",
    "val_loss = history.history['val_loss']\n",
    "\n",
    "epochs = range(1, len(loss)+1)\n",
    "\n",
    "plt.plot(epochs, loss, label='Training loss')\n",
    "plt.plot(epochs, val_loss, label='Validation loss')\n",
    "plt.title('Training and validation loss')\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Loss')\n",
    "plt.legend()\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "accuracy = history.history['accuracy']\n",
    "val_accuracy = history.history['val_accuracy']\n",
    "\n",
    "plt.plot(epochs, accuracy, label='Training accuracy')\n",
    "plt.plot(epochs, val_accuracy, label='Validation accuracy')\n",
    "plt.title('Training and validation accuracy')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.xlabel('Epochs')\n",
    "plt.legend()\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
